﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Data;
using DataAccess;
using Utility;

namespace Web.giamthi
{
    public partial class UCQuanLyPC : System.Web.UI.UserControl
    {
        LopHocControl lhCtr = new LopHocControl();
        MonHocControl mhCtr = new MonHocControl();
        GiaoVienControl gvCtr = new GiaoVienControl();
        PhanCongControl pcCtr = new PhanCongControl();
        PhongHocControl phCtr = new PhongHocControl();
        PhanCong pc = new PhanCong();
        Lich lich = new Lich();
        LichControl lcCtr = new LichControl();

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.QueryString["id"] != null)
                {
                    LoadPhanCongById();
                }
                else
                {
                    clear();
                }
                LoadLopHoc();
                LoadMonHoc();
                LoadGiaoVien();
                GetHour();
                GetMinutes();

            }
        }

        // hiển thị thông tin 1 dòng phân công để update
        private void LoadPhanCongById()
        {
            if (Request.QueryString["id"] != null)
            {
                int id = Int32.Parse(Request.QueryString["id"].ToString());
                pc = pcCtr.GetPhanCongById(id);

                DateSelect1.CalendarDate = pc.NgayBatDau.ToString();
                txtTongSoTiet.Text = pc.TongSoTiet.ToString();
                txtSoTiet.Text = pc.SoTiet.ToString();
                txtMoTa.Text = pc.MoTa;

                ddlGiaoVien.Text = pc.GiaoVien.TenGV + "-" + pc.GiaoVien.MaGV.ToString();
                ddlLop.Text = pc.LopHoc.TenLop + "-" + pc.LopHoc.MaLop.ToString();
                ddlMonHoc.Text = pc.MonHoc.TenMH + "-" + pc.MonHoc.MaMH.ToString();

                ddlGioBD.Text = pc.GioBatDau.Split('h')[0];
                ddlPhutBD.Text = pc.GioBatDau.Split('h')[1];
                ddlGioKT.Text = pc.GioKetThuc.Split('h')[0];
                ddlPhutKT.Text = pc.GioKetThuc.Split('h')[1];
                lblId.Text = id.ToString();

            }
            else
            {
                Response.Redirect("admin.aspx?page=phancong");
            }
        }

        // hiển thị lớp hoc trong combobox
        private void LoadLopHoc()
        {
            foreach (LopHoc lh in lhCtr.GetListLopHoc())
            {
                ddlLop.Items.Add(lh.TenLop + "-" + lh.MaLop.ToString());
            }
            ddlLop.DataBind();
        }

        // hiển thị mon hoc trong combobox
        private void LoadMonHoc()
        {
            foreach (MonHoc mh in mhCtr.GetListMonHoc())
            {
                ddlMonHoc.Items.Add(mh.TenMH + "-" + mh.MaMH.ToString());
            }
            ddlMonHoc.DataBind();
        }

        // hiển thị giao vien trong combobox
        private void LoadGiaoVien()
        {
            foreach (GiaoVien gv in gvCtr.GetListGiaoVien())
            {
                ddlGiaoVien.Items.Add(gv.TenGV + "-" + gv.MaGV);
            }
            ddlGiaoVien.DataBind();
        }

        // hiển thị giờ trong combobox
        private void GetHour()
        {
            ddlGioBD.Items.Clear();
            ddlGioKT.Items.Clear();
            ListItem lt = new ListItem();
            ddlGioBD.Items.Add(lt);
            ddlGioKT.Items.Add(lt);

            for (int i = 1; i <= 24; i++)
            {
                lt = new ListItem();
                lt.Text = i.ToString();
                lt.Value = i.ToString();
                ddlGioBD.Items.Add(lt);
                ddlGioKT.Items.Add(lt);
            }

            ddlGioBD.DataBind();
            ddlGioKT.DataBind();
        }

        // hiển thị phút trong combobox
        private void GetMinutes()
        {
            ddlPhutBD.Items.Clear();
            ddlPhutKT.Items.Clear();
            ListItem lt = new ListItem();
            ddlPhutBD.Items.Add(lt);
            ddlPhutKT.Items.Add(lt);

            for (int i = 0; i <= 60; i++)
            {
                lt = new ListItem();

                if (i.ToString().Length == 1)
                {
                    lt.Text ="0"+ i.ToString();
                    lt.Value ="0"+ i.ToString();
                }
                else
                {
                    lt.Text = i.ToString();
                    lt.Value = i.ToString();
                }
                ddlPhutBD.Items.Add(lt);
                ddlPhutKT.Items.Add(lt);
            }
            ddlPhutBD.DataBind();
            ddlPhutKT.DataBind();
        }

        // kiểm tra dữ liệu hợp lệ
        private bool KiemTra()
        {
            if (CheckValidate.CheckNull(DateSelect1.CalendarDate))
            {
                lblError.Text = "Chọn ngày bắt đầu !";
                return false;
            }
            else if (CheckValidate.IsDate(DateSelect1.CalendarDate) == false)
            {
                lblError.Text = "Ngày bắt đầu không hợp lệ !";
                return false;
            }

            else if (CheckValidate.GetYears(DateTime.Now, Convert.ToDateTime(DateSelect1.CalendarDate)) < 0)
            {
                lblError.Text = "Ngày bắt đầu không hợp lệ !";
                return false;
            }

            else if (CheckValidate.CheckNull(ddlGioBD.Text) || CheckValidate.CheckNull(ddlGioKT.Text))
            {
                lblError.Text = "Chọn giờ bắt đầu !";
                return false;
            }
            else if (CheckValidate.CheckNull(ddlPhutBD.Text) || CheckValidate.CheckNull(ddlPhutKT.Text))
            {
                lblError.Text = "Chọn giờ kết thúc !";
                return false;
            }
            else if (CheckValidate.CheckNull(txtSoTiet.Text))
            {
                lblError.Text = "Nhập số tiết !";
                return false;
            }
            else if (CheckValidate.CheckNull(txtTongSoTiet.Text))
            {
                lblError.Text = "Nhập tổng số tiết !";
                return false;
            }
            else if (CheckValidate.CheckIntNumber(txtTongSoTiet.Text) == false)
            {
                lblError.Text = "Tổng số tiết phải nhập số !";
                return false;
            }
            else if (CheckValidate.CheckIntNumber(txtSoTiet.Text) == false)
            {
                lblError.Text = "Số tiết phải nhập số !";
                return false;
            }
            else if (Int32.Parse(ddlGioBD.SelectedItem.ToString()) > Int32.Parse(ddlGioKT.SelectedItem.ToString()))
            {
                lblError.Text = "Giờ bắt đầu phải nhỏ hơn giồ kết thúc !";
                return false;
            }
            else if (Int32.Parse(ddlGioBD.SelectedItem.ToString()) == Int32.Parse(ddlGioKT.SelectedItem.ToString())
                   && Int32.Parse(ddlPhutBD.SelectedItem.ToString()) > Int32.Parse(ddlPhutKT.SelectedItem.ToString()))
            {
                lblError.Text = "Giờ bắt đầu phải nhỏ hơn giồ kết thúc !";
                return false;
            }

            else if (Int32.Parse(txtSoTiet.Text) > Int32.Parse(txtTongSoTiet.Text))
            {
                lblError.Text = "Số tiết học/ tuần phải nhỏ hơn tổng số tiết !";
                return false;
            }

            else
            {
                return true;
            }
        }

        // insert và update phân công
        protected void btnLuu_Click(object sender, EventArgs e)
        {
            if (KiemTra() == false)
            {
                return;
            }
            else
            {
                pc.MaLop = Int32.Parse(ddlLop.SelectedValue.ToString().Split('-')[1].ToString());
                pc.MaMH = Int32.Parse(ddlMonHoc.SelectedValue.ToString().Split('-')[1].ToString());
                pc.MaGV = ddlGiaoVien.SelectedValue.ToString().Split('-')[1].ToString();

                pc.NgayBatDau = DateTime.Parse(DateSelect1.CalendarDate);
                pc.TongSoTiet = Int32.Parse(txtTongSoTiet.Text);
                pc.SoTiet = Int32.Parse(txtSoTiet.Text);
                pc.GioBatDau = ddlGioBD.SelectedItem.ToString() + "h" + ddlPhutBD.SelectedItem.ToString();
                pc.GioKetThuc = ddlGioKT.SelectedItem.ToString() + "h" + ddlPhutKT.SelectedItem.ToString();
                pc.MoTa = txtMoTa.Text;

                if (lblId.Text.Length == 0)
                {
                    pcCtr.InsertPhanCong(pc);
                }
                else
                {
                    pc.PCID = Int32.Parse(lblId.Text);
                    pcCtr.UpdatePhanCong(pc);
                }
                clear();
                WebHelper.ShowMessage("Cập nhật thành công !", Page);
               
            }
        }

        private void clear()
        {
            DateSelect1.CalendarDate = "";
            txtSoTiet.Text = "";
            txtMoTa.Text = "";
            ddlGioBD.Text = "";
            ddlGioKT.Text = "";
            ddlPhutBD.Text = "";
            ddlPhutKT.Text = "";
            lblError.Text = "";
            txtSoTiet.Text = "";
        }

        protected void btnHuy_Click(object sender, EventArgs e)
        {
            clear();
        }


    }
}